/*
	File:		MainMenuState.h
	Author:		Arturo Mata, dmonroe
	Date:		11/4/2012
	Copyright:	Full Sail University

	Purpose:	State to handle main menu
*/

#ifndef MAINMENUSTATE_H
#define MAINMENUSTATE_H


#include "../source/IGameState.h"

#include "../source/SGD_Handle.h"


// Forward declarations
class IAudio;
class IGraphics;
class IInput;
class CWorld;
class IGameStateMachine;
class BitmapFont;


class CMainMenuState : public IGameState
{
public:
	// SINGLETON
	static IGameState*		GetInstance		( void );		// Expected signature for child classes! (Cannot have pure virtual static methods)
	virtual void			DeleteInstance	( void );
	
	// SETUP
	virtual bool	Enter	( void );			
	virtual bool	Exit	( void );			

	// FRAME UPDATE
	virtual bool	Input	( float fElapsedTime );
	virtual bool	Update	( float fElapsedTime );
	virtual bool	Render	( float fElapsedTime );


private:
	// SINGLETON
	static CMainMenuState*		s_Instance;

	CMainMenuState				( void );						// Default constructor
	virtual ~CMainMenuState		( void );						// Destructor

	CMainMenuState				( const CMainMenuState& GPS );	// Copy constructor
	CMainMenuState& operator=	( const CMainMenuState& GPS );	// Assignment operator

		
	// Wrappers
	IAudio*				m_pAudio;
	IGraphics*			m_pGraphics;
	IInput*				m_pInput;

	// World data
	CWorld*				m_pWorld;

	// Asset IDs
	HTexture			m_hTexture;

	BitmapFont*			m_pFont;
};

#endif //MAINMENUSTATE_H
